// pages/AnnualBill/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 当前选中年份， 默认当年
    currentYear: "",
    // 当前账单选项选择
    currentSelect: "",
    // 当前年收入
    currentYearsIncome: 0,
    // 当前年支出
    currentYearsPay: 0,
    // 当前年结余
    currentYearsSurplus: 0,
    // 当前账单选项
    currentSelectArray: [
      "所有账单",
      "日常"
    ],
    SelectIndex: 0,
    objectArray: [{
        id: 0,
        name: '所有账单'
      },
      {
        id: 1,
        name: '所有账单'
      },
    ],
    // table数据 nickName age tell address
    themeArr: {
      Mouths: '月份',
      Income: '收入',
      pay: '支出',
      Balance: '结余'
    },
    tableArr:[]

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取年份
    this.getYears()
  },


  // 获取本月日期
  getYears() {

    // 获取时间对象   获取年份
    var time = new Date().getFullYear();

    // 数据响应
    this.setData({
      currentYear: time
    })

  },
  // 切换选择年份
  selectYears(e) {
    // console.log("切换选择年份",e);
    //  获取切换选择年份
    this.setData({
      currentYear: e.detail.value
    })
    // 获取不同年份的年收入数据
    this.getMsgData(this.data.currentYear)

  },
  // 获取默认账单选项
  bindPickerChange(e) {
    //  获取下拉选项的下标
    this.setData({
      SelectIndex: e.detail.value
    })

  },

  // 补零函数
  addZero(num) {
    return num < 10 ? "0" + num : num;
  },
  // 将不同月份的数据分组,组成一个新的数组对象
  handelNewMonth(data) {
    let newArr = [];
    data.forEach((item, i) => {
      let index = -1;
      let isExists = newArr.some((newItem, j) => {
        // 相同月份的数据
        if (item.date.slice(5, 7) == newItem.date.slice(5, 7)) {
          index = j;
          return true;
        }
      })
      if (!isExists) {
        // console.log("---newArr--===>", item);
        newArr.push({
          date: item.date,
          subList: [item]
        })

      } else {
        // console.log("iiiitem---====>",item);
        newArr[index].subList.push(item);
      }
    })

    // console.log("---newArr--===>", newArr);
    return newArr
  },
  // 按月份把月收入等进行相加,获得月数据明细
  handelMonthDetailed(data) {
    var arrMonthTotal = []
    data.forEach(item => {
      var curIncome = 0
      var curPay = 0
      var curBalance = 0

      item.subList.map(T => {
        if (T.costType == 'income') {
          curIncome += Number(T.money)
        } else {
          curPay += Number(T.money)
        }

        curBalance = (curIncome - curPay).toFixed(2);
      })
      // console.log("income===>", income);
      // console.log("pay===>", pay);

      // table表格需要的数据格式
      var obj = {
        Mouths: item.date.slice(5, 7),
        Income: curIncome,
        Pay: curPay,
        Balance: curBalance
      }

      // console.log("输出的没项 ===>", obj);
      arrMonthTotal.push(obj)
    })

    this.setData({
      tableArr: arrMonthTotal
    })
  },
  // 处理年收入数据合计
  handleTotaldata(data) {
    // console.log("处理数据==>", data);
    if (data.length == 0) return;
    var IncomeTotal = 0 //年收入
    var PayTotal = 0 //年支出 
    var arr = []
    data.forEach(item => {

      // 判断当前年份的年收入,年支出,年结余
      if (item.costType === 'income') {
        IncomeTotal += Number(item.money) //类型转换再相加
      } else if (item.costType === 'pay') {
        PayTotal += Number(item.money) //类型转换再相加
      }
      arr.push({
        date: item.date,
        costType: item.costType,
        money: item.money
      })
    });

    this.handelMonthDetailed(this.handelNewMonth(arr))
    // this.handelMonthDetailed(this.handelNewMonth(arr))
    // 总收入和总支出累加完成后，计算结余
    var Surplus = (IncomeTotal - PayTotal).toFixed(2);

    // 数据响应
    this.setData({
      currentYearsIncome: IncomeTotal.toFixed(2),
      currentYearsPay: PayTotal.toFixed(2),
      currentYearsSurplus: Surplus,
      // tableArr:table
    })
  },

  // 获取某年的数据
  getMsgData(SelectYears) {
    var curYears = new Date().getFullYear()

    // 开始的日期
    var start = SelectYears + "-01-01";
    // 当前所在的月份
    var curMonth = "12"
    // 最后的日期
    var end = ""
    if (SelectYears === curYears) curMonth = new Date().getMonth() + 1

    // // 获取查询月份有多少天
    var dayNum = new Date(SelectYears, curMonth, 0).getDate();


    end = SelectYears + "-" + curMonth + "-" + dayNum;

    // console.log("开始日期==》", start, end);

    wx.cloud.callFunction({
      name: "get_msg_data",
      data: {
        startTime: start,
        endTime: end
      },
      success: res => {
        // console.log("获取数据成功==》", res)
        //  对总收入和总支出清零
        this.data.currentYearsIncome = 0;
        this.data.currentYearsIncome = 0;
        this.data.currentYearsSurplus = 0;
        this.handleTotaldata(res.result.data)
      },
      fail: err => {
        console.log("获取数据失败==》", err)
      }
    })

  },
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 获取当前用户的登录状态
    wx.getStorage({
      key: 'userLogin',
      success: res => {
        // console.log(res)
        if (res.data) {
          this.getMsgData(this.data.currentYear);

          // this.setData({
          //   hasLogin: true
          // })
        }

      }
    })
  },
  
})